/*
Coa Lightbox
Benjamin Scherer 
www.plue.me
*/


$(document).ready(function() {


/////////////////////////////////////
// Get Prepared
/////////////////////////////////////

// vars
var fade_lb = 460;
var fade_img = 0;

// prepare divs
$('body').append('<div id="coa_lb_full"><div></div></div>');

// preload images
$('body').append('<div id="coa_lb_preload"></div>');
$('.coa_lb a').each(function() {
	var load_img = '<img src="' + $(this).attr('href') + '">';
	$('#coa_lb_preload').append(load_img);
});


/////////////////////////////////////
// Click Linked Image
/////////////////////////////////////

$('.coa_lb a img').click(function() {

  // append big image
  var img = '<img src="' + $(this).parent().attr('href') + '">';
  $('#coa_lb_full > div').append(img);

  // append description
  var desc = $(this).attr('alt');
  if(!desc) desc = '';
  $('#coa_lb_full > div').append('<span class="desc">' + desc + '</span>');

  // append arrows and close link
  $('#coa_lb_full > div').append('<div id="coa_lb_nav"><span class="prev">&lt;</span><span class="next">&gt;</span><span class="close">x</span></div>');

  // activate navigation
  activateNav(fade_img);
  
  // fade full box in
  $('#coa_lb_full').fadeIn(fade_lb);


  /////////////////////////////////////
  // When Image Loaded
  /////////////////////////////////////

  $('#coa_lb_full img').load(function() {

    // fade in image and spans
    $('#coa_lb_full img').fadeIn(fade_lb);
    $('#coa_lb_full img, #coa_lb_full span').animate({opacity: 1}, fade_img);

   	adjustStuff();
 
 	 	checkNextPrev();
  });

  // add close events
  $('#coa_lb_full .close, #coa_lb_full').click(function() {
    $('#coa_lb_full').fadeOut(fade_lb);
    window.setTimeout(function() {
   	  $('#coa_lb_full > div').html('');
    }, fade_lb);
  });
  
  // stop propagation
	$('#coa_lb_full > div, #coa_lb_full .passive').click(function(e) {
     e.stopPropagation();
	});

  return false;
});


// end document ready function
});


/////////////////////////////////////
// Adjust Stuff
/////////////////////////////////////

function adjustStuff() {

   // adjust div measures
   var descH = $('#coa_lb_full').find('.desc').outerHeight();
   var navH = $('#coa_lb_full').find('#coa_lb_nav').outerHeight();
   var imgH = $('#coa_lb_full').find('img').height();
   var divH = imgH + descH + navH;
   var divW = $('#coa_lb_full').find('img').width();
   $('#coa_lb_full > div').height(divH).width(divW);

   // adjust div position
   var divT = '-' + Math.round( parseFloat(divH/2) ) + 'px';
   var divL = '-' + Math.round( parseFloat(divW/2) ) + 'px';
   $('#coa_lb_full > div').css('margin-top', divT).css('margin-left', divL);
}


/////////////////////////////////////
// Activate Navigation
/////////////////////////////////////

function activateNav(fade_img) {
	$('#coa_lb_full .next, #coa_lb_full .prev').click(function() {
		
		// img vars
		var cur_img = $(this).parent().parent().find('img').attr('src');
		var $cur_a = $('.coa_lb').find('a[href="' + cur_img + '"]');
 	 	var prev_img = $cur_a.prev().attr('href');
		var prev_desc = $cur_a.prev().find('img').attr('alt');
 	 	var next_img = $cur_a.next().attr('href');
 	 	var next_desc = $cur_a.next().find('img').attr('alt');
 
  	if(!prev_desc) prev_desc = '';
  	if(!next_desc) next_desc = '';

	  // change prev img and description
  	if( $(this).attr('class') == 'prev' ) {
  		
  		// animate opacity 0
  		if(fade_img != 0) $('#coa_lb_full img, #coa_lb_full .desc').animate({opacity: 0}, fade_img);
  		
  		// changes after fade_img
  		window.setTimeout(function() { 
				$('#coa_lb_full img').attr('src',prev_img);
				$('#coa_lb_full').find('.desc').html(prev_desc);
			}, fade_img);
  	}
  	
  	// change next img and description
  	if( $(this).attr('class') == 'next' ) {
  	
			// animate opacity 0
  		if(fade_img != 0) $('#coa_lb_full img, #coa_lb_full .desc').animate({opacity: 0}, fade_img);
  		
  		// changes after fade_img
  		window.setTimeout(function() { 
				$('#coa_lb_full img').attr('src',next_img);
				$('#coa_lb_full').find('.desc').html(next_desc);
			}, fade_img);
  	}

	});
}


/////////////////////////////////////
// Check Next Prev
/////////////////////////////////////

function checkNextPrev() {

	// img vars
	var cur_img = $('#coa_lb_full').find('img').attr('src');
	var $cur_a = $('.coa_lb').find('a[href="' + cur_img + '"]');
	var prev_img = $cur_a.prev().attr('href');
	var next_img = $cur_a.next().attr('href');

	// if prev img doesn't exist
	if ( !prev_img ) {
		$('#coa_lb_full .prev').hide().after('<span class="passive p">&lt;</span>');
	} else {
		$('#coa_lb_full .prev').show();
	$('#coa_lb_full .passive.p').remove();
	}

	// if next img doesn't exist
	if ( !next_img ) {
		$('#coa_lb_full .next').hide().after('<span class="passive n">&gt;</span>');
	} else {
		$('#coa_lb_full .next').show();
		$('#coa_lb_full .passive.n').remove();
	}

}